<?php
namespace Fanpaiji;

trait FileFunc {

    protected $error_num=0;

    protected $base_path = __DIR__;

	/**
     * 判断目录是否存在
     * @param $filePath   目录路径
     * @param int $make   是否创建  1是  0否
     * @return bool
     */
    public function is_have_dir($filePath,$make=1)
    {
        $filePaths = $this->base_path.$filePath;
        //判断目录是否存在
        if ( !file_exists($filePaths) ) { // 目录不存在
            if ( $make == 1 ) {  // 1 创建目录  0 不创建
                if ( !mkdir($filePaths,0777,true) ) { // 创建目录失败
                    $this->error_num++;
                    if ($this->error_num == 20) {   // 创建目录失败继续创建   有20次机会创建    20次都创建失败，全部暂停
                        echo "创建". $filePaths ."文件夹失败";exit;
                    }
                    self::is_have_dir($filePath,$make);
                }
            } else {
                return false;    //目录不存在并且不创建，返回 false
            }
        }
        return true;  // 目录存在 返回 true  创建目录成功  返回 true
    }


    /**
     * 读取已有的文件
     * @param $filePath
     * @return bool|string
     */
    public function readFile($filePath)
    {
        if ( !self::is_have_dir($filePath,0) ) {
            return '';
        };
        $filePaths = $this->base_path.$filePath;
        $this->error_num = 0;
        $myfile = fopen($filePaths, "r");
        $htmls = fread($myfile,filesize($filePaths));
        fclose($myfile);
        return $htmls;
    }


    /**
     * 写入文件中
     * @param $filePath
     * @param $fileName
     * @param $html
     * @param $type   w 写入 会把以前的数据删除    a 写入，保留以前的数据，在后面写入
     * @return bool|int
     */
    public function writeFile($filePath,$fileName,$html,$type='w')
    {
        self::is_have_dir($filePath,1);
        $filePaths = $this->base_path.$filePath;
        $myfile = fopen($filePaths.'/'.$fileName, $type);
        $result = fwrite($myfile, $html);
        fclose($myfile);
        return $result;
    }

}

